import Taro from "@tarojs/taro";

//查看图片拼接
export const getImageUrl = (str) => "/v1.0/api/file/Download/" + str;

//根据传值num数值，推算往后多少天，return出的结果是YYYY-MM-DD
export const calculateTime = (count) => {
  // 拼接时间
  let time1 = new Date();
  time1.setTime(time1.getTime() + 24 * 60 * 60 * 1000);
  let time2 = new Date();
  time2.setTime(time2.getTime() + 24 * 60 * 60 * 1000 * count);
  let Y2 = time2.getFullYear();
  let M2 =
    time2.getMonth() + 1 > 9
      ? time2.getMonth() + 1
      : "0" + (time2.getMonth() + 1);
  let D2 = time2.getDate() > 9 ? time2.getDate() : "0" + time2.getDate();
  return Y2 + "-" + M2 + "-" + D2;
};

//深拷贝
export const clone = (obj) => {
  // 当null NaN undefined number string等基本数据类型时直接返回
  if (obj === null || typeof obj !== "object") {
    return obj;
  }
  // Date类型
  if (obj instanceof Date) {
    const copy = new Date();
    copy.setTime(obj.getTime());
    return copy;
  }
  // 正则类型类型
  if (obj instanceof RegExp) {
    const Constructor = obj.constructor;
    return new Constructor(obj);
  }
  // 如果是数组等引用数据类型
  if (obj instanceof Array || obj instanceof Object) {
    const copyObj = Array.isArray(obj) ? [] : {};
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        copyObj[key] = clone(obj[key]);
      }
    }
    return copyObj;
  }
};

//姓名正则
export const name_reg = /^[\u4E00-\u9FA5]{2,5}$/;

//手机号正则
export const phone_reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;

//身份证正则
export const id_number_reg = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;

/**
 * 格式化日期时间
 * @param {date} date 日期时间
 * @param {string} fmt 格式,如：'yyyy-MM-dd hh:mm:ss'
 */
export const formatDate = (date, fmt) => {
  if (!date) return "-";
  date = new Date(date);
  const o = {
    "M+": date.getMonth() + 1, // 月份
    "d+": date.getDate(), // 日
    "h+": date.getHours(), // 小时
    "m+": date.getMinutes(), // 分
    "s+": date.getSeconds(), // 秒
    "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
    S: date.getMilliseconds(), // 毫秒
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (const k in o) {
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
  }
  return fmt;
};

//提示
export const msgEvent = (title) => {
  Taro.showToast({
    title,
    icon: "none",
    mask: true,
    duration: 2000,
  });
};
